fn print_type_of<T>(_: &T) {
    println!("{}", std::any::type_name::<T>())
}

fn main() {
    let x = 5;
    println!("x address:{:p}", &x); // 0x7ffee2e6c0cc
    print_type_of(&x); // i32

    let x = x + 1;
    println!("x+1 address:{:p}", &x); //  0x7ffee2e6c124

    let x = x * 2;
    println!("x+2 address:{:p}", &x); // 0x7ffee2e6c17c

    println!("The value of x is: {}", &x); // 12
    let s = format!("Hello");
    println!("{}", s);

    let c = "zzz";
    print_type_of(&c); // &str
    let cc = 'a';

    print_type_of(&cc); // char
}
